package org.dromara.quick.chat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.quick.chat.domain.ImChannel;
import org.dromara.quick.chat.domain.ImChannelUser;
import org.dromara.quick.chat.domain.ImGroupChat;
import org.dromara.quick.chat.domain.ImGroupMember;
import org.dromara.quick.chat.model.bo.create.ImGroupChatCreateBo;
import org.dromara.quick.chat.model.bo.query.ImGroupChatBo;
import org.dromara.quick.chat.model.vo.GroupChatUserInfoVO;
import org.dromara.quick.chat.model.vo.ImGroupChatDetailVO;
import org.dromara.quick.chat.model.vo.ImGroupChatVO;

import java.io.IOException;
import java.util.List;

/**
* @author Stars
* @description 针对表【im_group_chat(群聊表（群通讯录），记录群聊的相关信息及设置)】的数据库操作Service
* @createDate 2025-03-04 22:33:21
*/
public interface ImGroupChatService extends IService<ImGroupChat> {

    /**
     * 聊天框-查询群基本信息
     * @param groupId 群id
     * @param userId 用户id
     * @return
     */
    GroupChatUserInfoVO selectGroupChatInfo(Long groupId,Long userId);

    /**
     * 通讯录-群聊列表
     */
    List<ImGroupChatVO> selectGroupChatList(ImGroupChatBo imGroupChatBo);


    /**
     * 根据群号搜索群
     */
    ImGroupChatDetailVO searchGroupChat(Long id,String groupNumber);


    /**
     * 创建群
     * <p>
     *     1、群组表{@link ImGroupChat}中添加用户信息
     *     2、群组与用户关系表{@link ImGroupMember}中添加群主，让群主属于这个群
     *     3、创建悟空Im的群频道，并往频道表{@link ImChannel}中添加频道信息
     *     3、让群主订阅该频道，并且往频道与用户表中{@link ImChannelUser}添加群主
     * </p>
     * @param imGroupChatCreateBo
     * @return 群信息
     */
    ImGroupChatVO createGroupChat(ImGroupChatCreateBo imGroupChatCreateBo) throws IOException;

    /**
     * 处理群的群名称和头像
     * @param groupId
     */
    ImGroupChat selectImGroupChatByGroupId(Long groupId);

    /**
     * 处理群的群名称和头像
     * @param groupId
     */
    List<ImGroupChat> selectImGroupChatByGroupIds(List<Long> groupId);
}
